import adminList from '$v/adminList.ejs'
import { addadminRequest, adminListRequest, deleteadminRequest } from '$a/admin';

// 封装一个函数 等到管理员添加成功或者删除成功的时候 就调用这个函数 进行数据的再次请求和页面的二次渲染
async function newadminList(res) {
    // 在页面加载出来的时候 就获取到所有管理员的信息 并渲染到页面上
    let adminListResult = null;
    try {

        adminListResult = await adminListRequest();
        // console.log(adminListResult, 'adminListResult');
    } catch (e) {
        alert('获取管理员列表异常：' + e.message)
    }

    res.render(adminList({
        adminList: adminListResult
    }));
}

export default async (req, res) => {

    await newadminList(res)

    // 获取保存按钮

    //  Cannot set properties of null (setting 'onclick') 
    // 出现这个报错的原因：因为await之后都是异步 此时二级页面还没有渲染出来 但是获取saveAdminBtn这个按钮是同步进行的，于是按钮在页面还没渲染之前就进行了按钮的获取 获取到的按钮是null 所以不能进行点击事件
    // 解决方法：在 newadminList 函数调用的前面添加个await
    const saveAdminBtn = document.getElementById('saveAdminBtn')
    document.onclick = async function (e) {
        if (e.target.id === 'saveAdminBtn') {
            const adminNameValue = document.adminForm.adminName.value.trim();
            const passwordValue = document.adminForm.password.value.trim();
            const rePasswordValue = document.adminForm.rePassword.value.trim();
            //  进行判断
            // 如果三个有一个为空就出现提示
            if (!adminNameValue || !passwordValue || !rePasswordValue) {
                return alert('输入不能为空')
            }
            // 判断 如果两次密码输入不一致 就出现提示
            if (passwordValue !== rePasswordValue) {
                return alert('密码输入不一致')
            }

            try {
                await addadminRequest({
                    adminName: adminNameValue,
                    password: passwordValue,
                    regTime: new Date().toLocaleString(),
                })
                alert('添加成功')
                document.getElementById('clossAdd').click()
                newadminList(res)
            } catch (e) {
                alert('管理员添加有异常' + e.message)
            }
        }
        // e.target.id === 'btndelete'
        // 
        if (e.target.nodeName === "BUTTON" && e.target.parentNode.nodeName === "TD") {
            const adminName =e.target.dataset.adminname
            console.log(adminName);
           try{
            await deleteadminRequest(adminName)
            alert('删除管理员信息成功')
           }catch(e){
            alert('删除异常'+e.message)
           }
        }
    }

}